草庐IT

MySQL CHECK 约束替代

全部标签

c# - .Net Standard 中 CompileToMethod 的替代方案

我现在正在将一些使用表达式的库移植到.NetCore应用程序并遇到一个问题,我的所有逻辑都基于LambdaExpression.CompileToMethod而它根本就没有in.这是示例代码:publicstaticMethodInfoCompileToInstanceMethod(thisLambdaExpressionexpression,TypeBuildertb,stringmethodName,MethodAttributesattributes){...varmethod=tb.DefineMethod($"__StaticProxy",MethodAttributes.P

c# - Async/await 作为协程的替代品

我使用C#迭代器替代协程,它一直运行良好。我想切换到async/await,因为我认为它的语法更清晰并且它给了我类型安全性。Inthis(outdated)blogpost,JonSkeetshowsapossiblewaytoimplementit.我选择了一种稍微不同的方式(通过实现我自己的SynchronizationContext并使用Task.Yield)。这很好用。然后我意识到会有问题;目前协程不必完成运行。它可以在任何让步的地方优雅地停止。我们可能有这样的代码:privateIEnumeratorSleep(intmilliseconds){Stopwatchtimer=

c# - T 上的泛型约束同时是引用类型和值类型?

我无法理解通用约束的工作原理。我想我在这里遗漏了一些重要的东西。我在评论中附上了我的问题,如果您能提供一些解释,我们将不胜感激。//1stexample:classCwhereT:classwhereU:struct,T{}//Abovecodecompileswell,//OnfirstsightitlookslikeUmightbereferencetypeandvaluetype//atthesametime.TheonlyreasonIcanthinkof,isthatTmaybean//interfacewhichstructcanimplement,AmIcorrect?/

c# - Lazy<T> 如何解决需要 new() 约束的问题?

示例1(不编译):voidMain(){varc=newC();c.M.F();}classC{T_m=null;publicTM{get{if(_m==null)_m=newT();return_m;}}}classD{publicvoidF(){Console.WriteLine("iwascreated");}}结果:Cannotcreateaninstanceofthevariabletype'T'becauseitdoesnothavethenew()constraint示例2(有效):voidMain(){varc=newC();c.M.F();}classC{Lazy_m

c# - DotNetOpenAuth 是否有更好的替代品?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭5年前。Improvethisquestion我真的很想喜欢DotNetOpenAuth,一个用于.Net的OpenId、OAuth库,但它真的不适合我。首先,它似乎不适用于单声道(示例因web.config错误或其他错误而失败)。其次,我不需要库的99%的功能,我想要的只是一些简单的东西,可以为我处理OpenId/OAuth客户端使用的复杂性。我不需要编写OpenId服务器——我只希望我的用户点击“使用Goog

c# - c# 中 typedef 或子类化字符串的替代方法

情况我有一个类在内部处理许多不同类型的文件路径:一些是本地的,一些是远程的;一些相对的,一些绝对的。过去的情况是,它的许多方法将它们作为string相互传递,但要准确跟踪每个方法期望的路径类型变得非常困难。所需的修复所以我们基本上想typedef四种不同的类型到string:RemoteRelative,LocalRelative,RemoteAbsolute和LocalAbsolute。这样,静态类型检查器可以帮助开发人员确保他们提供和期望具有正确语义的string。不幸的是,string在BCL中是密封的,所以我们不能通过简单的继承来做到这一点。并且没有简单的typedef,所以我

c# - 使用基于约束的断言提高断言 IsNotNullOrEmpty 的可读性

我目前正在重写一些单元测试以使用NUnit3而不是NUnit2,并且需要将一些断言更改为基于约束的断言。我有以下断言:Assert.IsNullOrEmpty(result);我已经更改为:Assert.That(result,Is.Null.Or.Empty);但是,我对断言IsNotNullOrEmpty时的可读性并不完全满意:Assert.That(result,Is.Not.Null.And.Not.Empty);我目前的建议是创建以下静态类:publicstaticclassText{publicstaticEmptyConstraintIsNullOrEmpty=>Is.N

c# - 依赖注入(inject)替代方案

我正在研究依赖注入(inject),我可以看到它的好处,但我在使用它创建的语法时遇到了问题。我有这个例子publicclassBusinessProducts{IDataContext_dx;BusinessProducts(IDataContextdx){_dx=dx;}publicListGetProducts(){returndx.GetProducts();}}问题是我不想写BusinessProductsbp=newBusinessProducts(dataContextImplementation);我会继续写BusinessProductsbp=newBusinessPr

c# - 更快的 MD5 替代品?

我正在开发一个在整个驱动器中搜索给定文件的程序。目前,我计算已知文件的MD5哈希值,然后递归扫描所有文件,寻找匹配项。唯一的问题是MD5在处理大文件时速度非常慢。有没有我可以使用的更快的替代方案,同时保留非常小的误报概率?所有代码都在C#中。谢谢。更新我读到过即使是MD5也可以非常快并且磁盘I/O应该是限制因素。这让我相信我的代码可能不是最优的。这种方法有什么问题吗?MD5md5=MD5.Create();StringBuildersb=newStringBuilder();try{using(FileStreamfs=File.Open(fileName,FileMode.Open,

c# - 带有 dontEscape 的 Uri 构造函数已过时,替代方案是什么?

我的问题是关于在不转义的情况下将URL传递给HttpWebRequest,我搜索了论坛和互联网,但没有找到好的解决方案。我有以下URL:stringURL=www.website.com/sub/redirec\t\bs\dd所以当我像这样创建一个uri时:Uriuri=newUri(URL);HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(uri);在这种情况下,使用get方法我将获得以下URL:www.website.com/sub/redirect%5Ct%5Cbc%5Cdd这个符号“\”将被“%5C”取代。对我来说